package com.babble.comment.repository;

import com.babble.comment.entity.Comment;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;

import java.util.List;

/**
 * 评论Mongodb操作
 *
 * @author wm
 */
public interface CommentRepository extends MongoRepository<Comment, String> {
	/**
	 * 根据博客id,父类id为空进行排序查询
	 *
	 * @param blogId   博客id
	 * @param source   评论源
	 * @param pageable 分页信息
	 * @return 评论信息
	 */
	Page<Comment> findAllByBlogIdAndSourceAndParentIdIsNull(String blogId, int source, Pageable pageable);

	/**
	 * 根据博客id,父类id为空获取总数量
	 *
	 * @param blogId 博客id
	 * @param source 评论源
	 * @return
	 */
	long countByBlogIdAndSourceAndParentIdIsNull(String blogId, int source);

	/**
	 * 根据父级id查询评论
	 *
	 * @param parentId 父级id
	 * @return
	 */
	List<Comment> findAllByParentIdOrderByCreateTimeDesc(String parentId);


	/**
	 * 获取当前用户发表的评论
	 *
	 * @param userId 用户id
	 * @return
	 */
	List<Comment> findAllByUserIdOrderByCreateTimeDesc(String userId);


	/**
	 * 根据父类id批量删除
	 *
	 * @param id 父类id
	 * @return
	 */
	void deleteAllByParentId(String id);

	/**
	 * 根据父类id批量删除
	 *
	 * @param ids 父类id数组
	 * @return
	 */
	void deleteAllByParentIdIn(List<String> ids);
}
